#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <stdlib.h>

void hander(int sig)
{
    std::cout << "get a sig: " << sig << std::endl;
    exit(1);
}
int main()
{
    int cnt = 1;
    signal(SIGALRM, hander);
    alarm(1); // 设定一秒后的闹钟 -- SIGALRM
    while (true)
    {
        std::cout << "cnt: " << cnt << std::endl;
        cnt++;
    }
    // return 0;
}

//./mykill 2 1234
// int main(int argc,char* argv[])
// {
//     //abort();
//     if(argc!=3)
//     {
//         std::cout<<"Usage: "<<argv[0]<<" signum pid"<<std::endl;
//         return 1;
//     }
//     pid_t pid=std::stoi(argv[2]);
//     int signum=std::stoi(argv[1]);
//     kill(pid,signum);

//     return 0;
// }

// void hander(int sig)
// {
//     std::cout << "get a sig: " << sig << std::endl;
// }
// int main()
// {
//     // 对信号的自定义捕捉，我们只要捕捉一次，后续一直有效
//     // 1.一直不产生2信号，则不会执行hander动作
//     // 2.可以对更多的信号进行捕捉
//     // 3.2 SIGINT默认是 终止信号
//     // 4.2 SIGINT是什么？->ctrl+c --- 给模目标进程发送2号信号，SIGINT默认就是终止进程
//     // signal(3, hander);
//     // signal(4, hander);
//     // signal(5, hander);

//     signal(2, hander);
//     while (true)
//     {
//         std::cout << "hello bit,pid: " << getpid() << std::endl;
//         sleep(1);
//     }
// }